Load Balancing During Increased Data Traffic Latency

ABSTRACT

A system includes at least one server that is configured to provide a multi-client network service to a plurality of existing users. When the server receives requests to join the multi-client network service from new users, the server may issue timestamps to each new user, obtain load metric based on the requests or timestamps, and collect the load metric to obtain historical data characterizing a demand in the multi-client network service over time. Further, based on the historical data, the server can predict a future load demand in the multi-client network service and selectively enable to join the multi-client network service by at least one of the plurality of new users based on the future load demand.

CROSS-REFERENCE TO RELATED APPLICATIONS

This continuation application claims the priority benefit of U.S.Non-Provisional patent application Ser. No. 17/030,188 filed on Sep. 23,2020 and titled “Predicting Wait Time for New Session Initiation duringIncreased Data Traffic Latency” which in turn claims the prioritybenefit of U.S. Non-Provisional patent application Ser. No. 15/404,126filed on Jan. 11, 2017 and titled “Predicting Wait Time for New SessionInitiation during Increased Data Traffic Latency,” the disclosures ofwhich are hereby incorporated by reference in their entirety.

BACKGROUND Technical Field

This disclosure generally relates to multi-client network services suchas multiplayer online games or video-on-demand services. Moreparticularly, this disclosure relates to a system and method forproviding a multi-client network service where a new user session can bedelayed in response to detection of increased data traffic latency. Thesystem and method of this disclosure can be applicable, for example, inonline game environments, digital content distribution environments, andalso non-entertainment environments.

Description of Related Art

In recent years, multi-client network services, such as multiplayeronline games, online entertainment services, and video-on-demandservices, have become common and popular. Traditionally, themulti-client network services are implemented on one or more servers,which serve a plurality of remotely located users. One of existingtechnical problems with the multi-client network services involves theirpoor performance when an immediate scaling is required. For example,when a count of new users attempting to access the same multi-clientnetwork service, which is already provided to a certain amount ofexisting users, rapidly increases, the server handling the multi-clientnetwork service may not respond quickly to join the new users to themulti-client network service. These events typically cause degradingservice speeds, making the experience and enjoyment of the multi-clientnetwork service poor for all users, including the new users and existingusers.

One particular example of this problem is known as a “game rush,” whichmay happen when a particular multiplayer online game becomes of interestto a large group of new players, who attempt to participate in the gameat substantially same time instances. Accordingly, with the increase ofjoining requests by the new users, a data load stress on the servers andnetwork infrastructure handling the multiplayer online game alsoincreases. Upon increase of the stress over a certain threshold, the newand existing users start experiencing greater latency, slower speeds, oroverall degraded experience. This may cause the new and existing usersto re-launch or re-connect to the multiplayer online game, whichincrementally increases data traffic on the servers and infrastructure,thereby causing even greater stress on the servers and additionalslowing down of the service. Accordingly, there is still a need toimprove and stabilize the performance of multi-client network servicesupon a steep increase of new users attempting to access or join the samemulti-client network service.

SUMMARY

This section is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription section. This summary is not intended to identify keyfeatures or essential features of the claimed subject matter, nor is itintended to be used as an aid in determining the scope of the claimedsubject matter.

In one aspect of this disclosure, there is provided a system forproviding a multi-client network service of entertainment ornon-entertainment nature. The system comprises a server including atleast one processor, a non-transitory computer-readable medium includingcomputer-executable program instructions, and a network interfaceconfigured to operatively connect the server with a plurality of remoteuser devices. The system can also include at least one data storageconfigured to store at least digital media content. When thecomputer-executable program instructions are executed by the at leastone processor, the at least one processor provides the multi-clientnetwork service to a plurality of existing users over at least one datanetwork, receives a plurality of requests to join the multi-clientnetwork service from a plurality of new users such that the new userscan access the multi-client network service similarly to how theexisting users access the multi-client network service, and obtains loadmetric from the plurality of requests to join the multi-client networkservice, wherein the load metric characterize at least a traffic load onthe multi-client network service.

Further, the at least one processor collects the load metric to obtainhistorical data characterizing, for example, a demand in themulti-client network service over time, predicts a future load demand inthe multi-client network service based on the historical data, andselectively enables to join the multi-client network service by at leastone of the plurality of new users based on the future load demand.

In another aspect of this disclosure, there is provided a method forproviding a multi-client network service. The method may be implementedby a computer or a server and comprise the following operations:providing the multi-client network service to a plurality of existingusers over at least one data network, receiving a plurality of requeststo join the multi-client network service from a plurality of new userssuch that the new users can access the multi-client network servicesimilarly to how the existing users access the multi-client networkservice, and obtaining load metric from the plurality of requests tojoin the multi-client network service, wherein the load metriccharacterize at least a traffic load on the multi-client networkservice. The method further comprises collecting the load metric toobtain historical data characterizing a demand in the multi-clientnetwork service over time, predicting a future load demand in themulti-client network service based on the historical data, andselectively enabling to join the multi-client network service by atleast one of the plurality of new users based on the future load demand.

In yet another aspect of the disclosure, there is provided anon-transitory processor-readable medium having instructions storedthereon, which when executed by one or more processors, cause the one ormore processors to implement the above-outlined method for providing amulti-client network service.

Additional objects, advantages, and novel features of the examples willbe set forth in part in the description, which follows, and in part willbecome apparent to those skilled in the art upon examination of thefollowing description and the accompanying drawings or may be learned byproduction or operation of the examples. The objects and advantages ofthe concepts may be realized and attained by means of the methodologies,instrumentalities and combinations particularly pointed out in theappended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are illustrated by way of example and not limitation in thefigures of the accompanying drawings, in which like references indicatesimilar elements.

FIG. 1 shows a block diagram illustrating a system for providing amulti-client network service.

FIG. 2 shows a process flow diagram of a method for providing amulti-client network service.

FIG. 3 shows a process flow diagram of another method for providing amulti-client network service.

FIG. 4 shows an example computer system that can be used to implementthe methods for providing a multi-client network service.

Corresponding reference characters indicate corresponding componentsthroughout the several views of the drawings. Skilled artisans willappreciate that elements in the figures are illustrated for simplicityand clarity and have not necessarily been drawn to scale. For example,the dimensions of some of the elements in the figures may be exaggeratedrelative to other elements to help to improve understanding of variousembodiments of the present disclosure. In addition, common butwell-understood elements that are useful or necessary in a commerciallyfeasible embodiment are often not depicted in order to facilitate a lessobstructed view of these various embodiments of the present disclosure.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

The present disclosure generally relates to a system and methods forproviding a multi-client network service such as a multiplayer onlinegame, a video-on-demand service, or similar online or network-basedentertainment service available to a plurality of remotely locatedusers. The principles of this disclosure are also applicable tonon-entertainment systems. The aspects of embodiments disclosed hereinovercome at least some prior art drawbacks and/or solve a technologicalproblem of degrading performance of a multi-client network service upona steep increase in count of new-to-session users seeking to join themulti-client network service (such as during a “game rush” event).Accordingly, at least some aspects of embodiments disclosed herein canprovide certain technical effects such as improving stability andperformance of the system for providing a multi-client network serviceupon an increase in a demand in the same multi-client network servicesuch that the existing users to the multi-client network service do notexperience a significant latency or degradation in enjoyment of themulti-client network service. The principles of this disclosure can beutilized in both systems that can dynamically grow their capacity (e.g.,scalable systems) and systems having static capacity.

According to various embodiments of this disclosure, the system issuestimestamps (or other indicia) to all clients (users) when the systemreceives requests to initiate, access, or join a particular multi-clientnetwork service from the clients (users). When clients (users) are ableto initiate, access, or join the multi-client network service, theclients become “existing users.” Furthermore, when the system receives,from a new user, a request to join the multi-client network service andthis multi-client network service is already joined by a number ofexisting users, the system can issue a timestamp or other indicia to therequest or the new user or a user device of the new user. Timestampsassociated with a plurality of new users can be monitored and processedby the system so as to determine a level of “stress” on the system,latency, traffic volume, and/or any other similar load metric. This loadmetric can be monitored in real-time to determine if it becomes above acertain predetermined or dynamically determined threshold value. If theload metric becomes above the threshold value, the system may not allowthe new users to join the multi-client network service so as not todegrade the experience and enjoyment of the multi-client network serviceby the existing users. The new users may be asked to wait a certainperiod until the current load capacity of the system is enlarged or thesystem is properly scaled to be able to join the new users with noeffect on the existing users. Accordingly, the new users can be joinedto the multi-client network service on a first-come-first-served policybasis, for example, based on the corresponding timestamps or otherindicia or identifiers (IDs) assigned to the new user.

In another embodiment, the system has another load threshold such thatrequests are not issued a timestamp when the load is below the loadthreshold. In such an embodiment, the overhead of issuing timestamps isavoided if there is little load on the system. As the load increases,the new threshold will be surpassed, and requests from the users willreceive timestamps. As the load increases further, the load threshold issurpassed, but requests from the previous users will have timestamps, berecognized as “existing users,” and not be made to wait.

In certain implementations, the system may also determine a make, model,type, or any other characteristic of personal user device or machine ofthe new users such that the system can prioritize joining only thoseusers who operate the personal user devices or machines of apredetermined make, model, type, or other characteristic. For example,those new users that operate game devices of a particular brand may beallowed to join the multi-client network service before other new usersthat operate other devices can join the same multi-client networkservice.

In another implementation, a determination regarding treatment of anincoming request could be based on the user rather than the device therequest came from. For example, a user with a “gold level” account maybe given a priority regardless of what device is being used. The accountlevel can be determined by the system based on data contained in theuser request.

In another implementation, when an estimated wait time is provided inthe response to a user request, the user device can display theestimated wait time to a user.

In another implementation, when the estimated wait time is calculated,the response to the request can provide information regardingcontrolling the period of time until the user (client) retries the userrequest. This delay can increase as the load on the system increases,reducing the number of retry requests are coming into the system, whichreduces the stress on the system when that relief is most needed.

In yet another implementation, the server can keep track of particulartimestamps issued, such as with an ID, so that it may invalidate atimestamp if the client presenting the timestamp misbehaves, such asretrying requests too frequently.

In additional implementations, the issued timestamps may have anexpiration time. If a particular existing user returns with thetimestamp after a long absence, then their timestamp will be expired andhe will be treated as a “new user” instead of as an “existing user” andwill be issued a new timestamp and may be caused to wait before joiningthe same multi-client network service. The expiration of a timestamp maybe extended as a user makes additional requests with the timestamp. Thismay be done by returning an updated timestamp to the user, or byadjusting an expiration stored on the server side. There can be a limitto how far a timestamp expiration can be extended.

In some additional implementations, the timestamp provided to the user(client or user device) can be secured by applying encryption, hashing,salting, checksums, or associating the timestamp with the user (e.g., anInternet Protocol (IP) address, device ID, account ID, and the like).

In yet additional implementations, the system can be configured toaggregate the load metric over time to generate historical data. Thehistorical data can be analyzed by the system to make load or trafficpredictions. The predictions can change the threshold value so as toaddress a possible steep increase in the new users in advance. In otherwords, the predictions can be used in determining whether to join newusers to the multi-client network service at given times. Thus, thesystem enables early detection of certain events, such as a “game rush”event, and addresses these events in advance. The predictions can bemade based on the historical data using artificial intelligence methods,machine-learning methods, statistical methods, heuristic methods, datapattern recognition methods, curve comparison methods, and/or methodsfor determining acceleration or deceleration in a load demand or anothercharacteristic associated with the use of the multi-client networkservice.

In certain additional implementations, there can be more than onethreshold value established to watch. For example, there can be a firstthreshold value corresponding to a predetermined amount of load on thesystem. When the load metric (e.g., as explained herein, a level of“stress” on the system, latency, traffic volume, or other metric basedon the timestamps) becomes above the first threshold value, the systemmay not allow the new users to join the multi-client network service soas not to degrade the experience and enjoyment of the multi-clientnetwork service by the existing users. The new users may be asked towait a certain period until the current load capacity of the system isenlarged or the system is properly scaled to be able to join the newusers seamlessly for the existing users. The first threshold value canbe set based on the capacity of the system. The first threshold valuecan be fixed or automatically updated in real-time based on one or morecriteria. The system can also maintain a second threshold value, whichdiffers from the first threshold value. The second threshold valuetypically comes into play when the first threshold value was “triggered”(i.e., when the load metric reached the first threshold value). Thesecond threshold value can be a cut-off time for the timestamps.Accordingly, the users that caused generation of user requests with thetimestamps issued before the second threshold value (i.e., the cut-offtime) are allowed to join the multi-client network service. In contrast,the users that caused generation of user requests with the timestampsissued after the second threshold value (i.e., the cut-off time) are notallowed to join the multi-client network service for at least a waitperiod. The second threshold value can be predetermined or be constantlyupdated based on the load on the system.

In some implementations, the multi-client network service or the systemcan keep track of the timestamps that it issues. For example, the systemcan use this information in determining how far to move the secondthreshold value when adjusting the second threshold value.

It should be mentioned that that the multi-client network service can beutilized in both entertainment services (e.g., content delivery systems,online games, etc.) and non-entertainment services (e.g., an onlinestock quote and trade systems). The embodiments of this disclosure areapplicable to both entertainment services and non-entertainmentservices. However, to provide examples, the disclosure refers mostly toonline gaming.

In certain embodiments, the system for providing a multi-client networkservice described herein, can be of a fixed capacity. In theseembodiments, the system is designed to force new users wait in order toensure that the system capacity is not exceeded and the existing usersare allowed to use the system normally. Accordingly, the principlesdescribed herein can be useful in situations where the systemexperiences a spike in data traffic caused by new users. An attempt toprovide service to all of the new and existing users would result in thesystem exceeding its capacity. Such a spike can be caused, for example,by the traffic created by timers.

In other implementations, the system for providing a multi-clientnetwork service described herein, can possess the ability to dynamicallyincrease the system capacity in response to an increased load (traffic).This can be accomplished, for example, by allowing additional servers tohandle system requests. It may take some time for the new capacity tobecome available once the system initiates the increase in capacity. Asudden spike in traffic may cause the number of requests to the systemto exceed the capacity of the system to handle those requests betweenthe time the system initiates the increase in capacity and the time theincrease in capacity becomes available. New user requests can be forcedto wait when the traffic exceeds the capacity in order to ensure thatexisting users are not adversely affected. When the additional capacitybecomes available, the new session requests forced to wait can beallowed to get the access to the multi-client network service. If theincrease in traffic is more substantial than the increase in capacity,then only some of the new users that were forced to wait can be allowedto access the multi-client network service in order to ensure that thenew set of existing users does not exceed the new capacity.

The following detailed description of embodiments includes references tothe accompanying drawings, which form a part of the detaileddescription. Approaches described in this section are not prior art tothe claims and are not admitted to be prior art by inclusion in thissection. Reference throughout this specification to “one embodiment,”“an embodiment,” “some embodiments,” “some implementations” or similarlanguage means that a particular feature, structure, or characteristicdescribed in connection with an example implementation is included in atleast one embodiment of the present disclosure. Thus, appearances of thephrases “in one embodiment,” “in an embodiment,” “in some embodiments,”and similar language throughout this specification may, but do notnecessarily, all refer to the same embodiment.

Furthermore, the described features, structures, or characteristics ofembodiments may be combined in any suitable manner in one or moreimplementations. In the following description, numerous specific detailsare provided, such as examples of programming, software modules, userselections, network transactions, database queries, database structures,hardware modules, hardware circuits, hardware chips, etc., to provide athorough understanding of embodiments. One skilled in the relevant artwill recognize, however, that the embodiments can be practiced withoutone or more of the specific details, or with other methods, components,materials, and so forth. In other instances, well-known structures,materials, or operations are not shown or described in detail to avoidobscuring aspects of the disclosure.

Aspects of the embodiments of this disclosure will now be presented withreference to accompanying drawings which show blocks, components,circuits, steps, operations, processes, algorithms, and the like,collectively referred to as “elements” for simplicity. These elementsmay be implemented using electronic hardware, computer software, or anycombination thereof. Whether such elements are implemented as hardwareor software depends upon the particular application and designconstraints imposed on the overall system. By way of example, anelement, or any portion of an element, or any combination of elementsmay be implemented with a “processing system” that includes one or moreprocessors. Examples of processors include microprocessors,microcontrollers, Central Processing Units (CPUs), digital signalprocessors (DSPs), field programmable gate arrays (FPGAs), programmablelogic devices (PLDs), state machines, gated logic, discrete hardwarecircuits, and other suitable hardware configured to perform variousfunctions described throughout this disclosure. One or more processorsin the processing system may execute software, firmware, or middleware(collectively referred to as “software”). The term “software” shall beconstrued broadly to mean processor-executable instructions, instructionsets, code segments, program code, programs, subprograms, softwarecomponents, applications, software applications, software packages,routines, subroutines, objects, executables, threads of execution,procedures, functions, and the like, whether referred to as software,firmware, middleware, microcode, hardware description language, orotherwise.

Accordingly, in one or more embodiments, the functions described hereinmay be implemented in hardware, software, or any combination thereof. Ifimplemented in software, the functions may be stored on or encoded asone or more instructions or code on a non-transitory computer-readablemedium. Computer-readable media includes computer storage media. Storagemedia may be any available media that can be accessed by a computer. Byway of example, and not limitation, such computer-readable media cancomprise a random-access memory (RAM), a read-only memory (ROM), anelectrically erasable programmable ROM (EEPROM), compact disk ROM(CD-ROM) or other optical disk storage, magnetic disk storage, solidstate memory, or any other data storage devices, combinations of theaforementioned types of computer-readable media, or any other mediumthat can be used to store computer executable code in the form ofinstructions or data structures that can be accessed by a computer.

For purposes of this patent document, the terms “or” and “and” shallmean “and/or” unless stated otherwise or clearly intended otherwise bythe context of their use. The term “a” shall mean “one or more” unlessstated otherwise or where the use of “one or more” is clearlyinappropriate. The terms “comprise,” “comprising,” “include,” and“including” are interchangeable and not intended to be limiting. Forexample, the term “including” shall be interpreted to mean “including,but not limited to.”

The terms “digital content” and “digital product” shall be construed tomean one or more of the following: media content, multimedia content,entertainment content, video, video-on-demand, pay-per-view video,audio, music, television show, television program, movie, computer game,video game, Internet game, network game, console game, virtual realitycontent, electronic book, and electronic magazine. According toembodiments of this disclosure, digital products can be forpurchase-only products. The terms “digital content” and “digitalproduct” can be used interchangeably.

The term “multi-client network service” shall be construed to mean aprovision of a requested service using client-server architecture tocommunicate data relating to the requested service to a plurality of endusers. Some examples of multi-client network service include amultiplayer online game, multiplayer network game, multiplayerInternet-based game, multiplayer virtual reality game, Internet-basedmedia content broadcasting, online multimedia content broadcasting,online entertainment content broadcasting, video-on-demand service,pay-per-view video service, web service, and the like. The multi-clientnetwork service can be initiated or called by end users and/or byautomated processes, i.e., by computer machines such as end userdevices, network devices, servers, and the like. Accordingly,multi-client network service can be initiated or called by a “client,”which can be a user or a machine.

The terms “user device,” “remote user device,” and “personal device”shall mean any electronic device configured to process and displaydigital data along with data communication. By way of example, and notlimitation, some examples of user devices include a mobile device,cellular phone, user equipment, terminal, mobile phone, smart phone,Internet phone, tablet computer, laptop computer, desktop computer,workstation, thin client, personal digital assistant, music player,multimedia player, gaming device, game console, navigation system,television system, multimedia system, multimedia player, netbook, homegateway, broadband gateway, network appliance, set top box, accessgateway, networking switch, entertainment system, infotainment system,and in-vehicle computer. The terms “user device,” “remote user device,”and “personal device” can be used interchangeably.

The term “user” shall be construed to mean an end user of a user device,which is defined above. The term “existing user” shall be construed tomean a user of a user device that already received access or joined to amulti-client network service. The term “new user” shall be construed tomean a user of a user device, which has requested access or joining to amulti-client network service, but which has not yet been provided accessor joined to the multi-client network service. The term “new user” canbe also construed to mean a “new-to-session” user (i.e., a user who isnew to a particular session of a multi-client network service).

The term “load metric” shall be construed to mean a parametercharacterizing, for example, a load (e.g., a traffic load) on a systemor server providing at least one multi-client network service. The term“load metric” may be also construed to mean a parameter characterizing autilization of a system or server providing at least one multi-clientnetwork service. The term “load metric” may be also construed to mean aparameter characterizing a data traffic latency associated with a systemor server providing at least one multi-client network service.

Referring now to the drawings, example embodiments are described. Thedrawings are schematic illustrations of idealized example embodiments.Thus, the example embodiments discussed herein should not be construedas limited to the particular illustrations presented herein, ratherthese example embodiments can include deviations and differ from theillustrations presented herein.

FIG. 1 shows a block diagram illustrating a system 100 for providing amulti-client network service, according to one example embodiment. FIG.1 assumes that all callers to the multi-client network service are userdevices. The multi-client network service may operate with digitalproducts or data, or can simply validate or generate tokens or makecalculations. System 100 can include a server 105, which in turn caninclude at least one processor, computer-readable medium for storing adatabase, at least one digital product, or computer-implementableinstructions, and a network interface for enabling the server tocommunicate with other elements of the system. Server 105 may maintainand provide an online store such as online digital content store oronline game store for selling digital products to users. Server 105 maymaintain and provide a video-on-demand service to a plurality of users.Server 105 may also relate to a game server to maintain and provide amultiplayer online game to a plurality of users.

Server 105 can be in operative communication with one or more userdevices 110A, 110B via one or more communications networks 115. Asexplained above, user devices 110A, 110E are operated by users and canrefer to a personal computer, game console, mobile device, and the likedevice. Communications network 115 can refer to any wired, wireless, oroptical networks including, for example, the Internet, intranet, localarea network (LAN), Personal Area Network (PAN), Wide Area Network(WAN), Virtual Private Network (VPN), cellular phone networks (e.g.,packet switching communications network, circuit switchingcommunications network), Bluetooth radio, Ethernet network, an IEEE802.11-based radio frequency network, IP communications network, or anyother data communication network utilizing physical layers, link layercapability, or network layer to carry data packets, or any combinationsof the above-listed data networks.

User devices 110A, 110B can be of different makes, models, or types. Forexample, there can be user devices 110A, which refer to user devices ofa predetermined make, model, or type, and there can be user devices110B, which do not refer to the user device of the predetermined make,model, or type. Alternatively, user devices 110A refer to user devicesof a first predetermined make, model, or type, while user devices 110Brefer to user devices of a second predetermined make, model, or type.For example, user devices 110A can be PlayStation™ devices or Sony™ madedevices.

In some implementations, server 105 can be configured to determine amake, model, or type of a user device and categorize it as a user device110A or as a user device 110B. This determination can be made by theserver based on metadata received from the user device or othercommunications, such as requests to join a multi-client network service,also received from the user device. Further, server 105 can make adecision to add a particular user device based on whether it wascategorized as a user device 110A or user device 110B. For example,server 105 can prioritize joining and serving user devices 110A overuser device 110B.

System 100 also includes one or more data storages or digital contentproviders 125 such as server computers, which can store digital productsor provision at least some part of multi-client network services. Thedigital products can be transmitted or broadcasted to selected userdevices based on instructions received from server 105. For example,when a user of one of user devices 110 accesses the online storemaintained by server 105 and request access to a certain digital product(e.g., a video-on demand or online multiplayer computer game), it can bedownloaded from one of content providers 125 to the respective userdevice; or the user device can be granted access to content provider 125to access the digital product.

Server 105 can also include a database for maintaining user accounts,user settings, user preferences, user personal information, user paymentinformation, and, optionally, some digital products. The database can bea relational database storing IDs or references of digital productsassociated with user IDs or user accounts.

As explained herein, server 105 can provide a multi-client networkservice 120, such as a multiplayer online game, to a plurality of usersof user devices 110A and/or user devices 110B. Multi-client networkservice 120 can be provisioned to the user device over one or morecommunications networks 115. Server 105 can constantly monitor a datatraffic associated with multi-client network service 120 so as to ensurethere is no latency in provisioning multi-client network service 120 nordegradation in any performance associated with multi-client networkservice 120. For these ends, server 105 can issue timestamps to each newuser of the user devices 110A, 110E upon receipt by server 105 ofrequests to access or join multi-client network service 120 by theusers. In other implementations, server 105 can issue other indicia orIDs to the new users instead of or in addition to the timestamps.

Based solely on the timestamps, server 105 can make determination orcalculation of a load metric such as a latency value, data trafficvalue, a system stress value, and the like. In other implementations,however, the load metric can be determined, obtained, or calculatedbased on other or additional criteria such as data network relatedmeasurements, current load capacity and the like.

Server 105 can further maintain a threshold load value, which can bepredetermined or dynamically changed based on certain criteria (e.g., acurrent load capacity of server 105 to provision multi-client networkservice). Server 105 can repeatedly compare the load metric obtainedfrom the user requests or timestamps with the threshold load value todetermine if the load metric meets or exceeds the threshold load value.For example, when there is a “game rush” event or a steep increase innew users, server 105 can detect that the current load metric meets orexceeds the threshold load value. In this case, the new users are notallowed to access or join multi-client network service 120, at least ona temporary basis, and are kept in a wait mode, so as to ensure that theexisting users continue enjoying multi-client network service 120without interruptions nor degradation in a quality of service associatedwith multi-client network service 120.

In some implementations, the wait mode can be ended and the new userscan join multi-client network service 120 after expiration of apredetermined period. In other implementations, the wait mode can beended and the new users can join multi-client network service 120 afterserver 105 determines that the current load metric becomes below thethreshold load value. In other implementations, the wait mode can beended and the new users can join multi-client network service 120 afterserver 105 scales up so as to be able to provision the same multi-clientnetwork service 120 to a larger group of users without a substantialdecrease in speeds or an increase in latency. For example, server 105can manage adding or activating one or more additional computationalresources 130 (e.g., servers similar to server 105) to act in concertwith server 105 in provisioning the same multi-client network service120 to a larger group of users. When additional computational resources130 are added or activated, one or more of the new users can be enabledto join the multi-client network service 120.

So long as the new users are not allowed to access or join multi-clientnetwork service 120 when server 105 detects that the current load metricmeets or exceeds the threshold load value, server 105 can deliver orcause delivering to these new users a wait message to inform them thatthey are not allowed to access or join multi-client network service 120at least on a temporary basis. Server 105 can also calculate a wait timefor each individual new user based at least on its timestamp andoptionally other criteria such as the current load capacity, the currentload metric, or the current threshold load value. The wait time can beincluded in the wait message. Thus, the new users may understand whenthey can start enjoying the multi-client network service 120.

Server 105 can be also configured to determine and monitor a currentload capacity of server 105 or multi-client network service 120 based onone or more criteria such as a count of new and existing users,timestamps, bandwidth, network infrastructure parameters, latencyparameters, and so forth. In some implementations, server 105 can alsobe configured to dynamically or repeatedly update the threshold loadvalue based on changes in the current load capacity over time.

Server 105 is also configured to answer one or more discrete networkrequests generated by new users and existing users. Server 105 may notmaintain an established connection for existing users but can answeradditional requests generated by the existing users. Server 105 cananalyze the requests and differentiate if they are originated by theexisting users or new users. For example, as server 105 answers each ofthese additional requests, server 105 will tell from the timestamps thata particular request is from an existing user and will allow thatrequest through even if other requests are being told to wait.

In yet additional implementations, server 105 can be also configured tocollect the load metric over one or more periods to obtain historicaldata. Thus, the historical data characterizes a demand in multi-clientnetwork service 120 over a predetermined period. In other words, thehistorical data can inform how the load metric changes over time withrespect to a certain multi-client network service based on a number offactors or events.

Further, server 105 can process and analyze the historical data to makecertain predictions related to a future load demand in multi-clientnetwork service 120, a load capacity associated with server 105 ormulti-client network service 120, or a load metric. Server 105 canselectively enable one or more new users to access or join multi-clientnetwork service 120 based at least in part on these predictions. Thepredictions can be made based on the historical data using artificialintelligence methods, machine-learning methods, statistical methods,heuristic methods, data pattern recognition methods, curve comparisonmethods, and/or methods for determining acceleration or deceleration inthe load demand or another characteristic associated with multi-clientnetwork service 120.

FIG. 2 is a process flow diagram showing a method 200 for providing amulti-client network service, according to an example embodiment. Method200 may be performed by processing logic that may comprise hardware(e.g., decision-making logic, dedicated logic, programmable logic,application-specific integrated circuit (ASIC)), software (such assoftware run on a general-purpose computer system or a dedicatedmachine), or a combination of both. In one example embodiment, theprocessing logic refers to server 105 of FIG. 1. Below recitedoperations of method 200 may be implemented in an order different thandescribed and shown in the figure. Moreover, method 200 may haveadditional operations not shown herein, but which can be evident forthose skilled in the art from the present disclosure. Method 200 mayalso have fewer operations than outlined below and shown in FIG. 2.

Method 200 assumes that a multi-client network service is alreadyinitiated by one or more clients (user devices) and the users that usethe multi-client network service are “existing clients.” Accordingly,method 200 can commence in operation 205 with server 105 providing ormaintaining multi-client network service 120 to a plurality of existingusers of user devices 110A, 110B over at least one communicationsnetwork 115. Multi-client network service 120 can refer to, for example,a network multiplayer game, an online multiplayer game, a virtualreality multiplayer game, a video-on-demand service, a televisionbroadcasting service, a multiuser online entertainment service, and thelike.

At operation 210, server 105 receives one or more requests to joinmulti-client network service 120 from one or more new users such thatthe new users can access the same multi-client network service 120similarly to how the existing users access and enjoy the multi-clientnetwork service 120. The requests to join multi-client network service120 can include certain data or metadata such as a user ID, usercredentials, information pointing out what multi-client network servicethe user want to join or access, information concerning a make, model,or type of user device, and so forth. In some embodiments, server 105can request from user devices of the new users any or all of theabove-listed parameters such as a user ID, user credentials, informationpointing out what multi-client network service the user want to join oraccess, and information concerning a make, model, or type of userdevice.

At operation 215, server 105 individually and independently issuestimestamps to each of the new users upon receipt of the requests toaccess or join multi-client network service 120 from the new users. Thetimestamps can be associated with the requests to access or joinmulti-client network service 120 and stored in a memory or database ofserver 105 or other data storage such as data storage 125. Each of thetimestamps can characterize a time and date when a certain new userrequested to access or join multi-client network service 120 or when acorresponding request to access or join multi-client network service 120was received by server 105.

At operation 220, server 105 obtains load metric from the requests tojoin or access multi-client network service 120. The load metric can becalculated based on the timestamps and optionally other parameters suchas a current load capacity of multi-client network service 120. Forthese ends, server 105 may repeatedly determine the current loadcapacity of multi-client network service 120. Thus, the load metric cancharacterize at least a traffic load on the multi-client network serviceat one or more given times.

At operation 225, server 105 repeatedly compares the load metric to athreshold load value to determine if the load metric meets or is abovethe threshold load value at given times. Accordingly, at operation 230,server 105 makes a corresponding decision as to whether the load metricmeets or is above the threshold load value at given times. Obviously,operations 225 and 230 can be considered as a single operation performedby server 105.

If it is determined that the load metric does not meet or is below thethreshold load value, method 200 proceeds to operation 235 where server105 selectively enables one or more of the new users to join or accessmulti-client network service 120. In some implementations, the new userscan be enabled or allowed to join multi-client network service 120 on afirst-come-first-served policy basis. In other implementations, and asexplained above, the new users can be enabled or allowed to joinmulti-client network service 120 based on the make, model, brand, ortype of the user device 110A or 110B that the new users use.

Alternatively, if it is determined that the load metric does meet or isabove the threshold load value, method 200 proceeds to operation 240,where server 105 calculates an estimated wait time for each of the newusers based on the load metric and the timestamps of each of the newusers. Further, at operation 245, server 105 causes delivery of a waitmessage to at least one of the new users and keeps at least one of thenew users in a wait mode for a predetermined period or until the loadmetric changes so as not to meet or be above the threshold load value.The load metric can change if the existing users “leave” and no longeraccess multi-client network service 120 or when server 105 activates oneor more additional computational (or network) resources 130 to increasea capacity of server 105 or multi-client network service 120. Each ofthe wait messages can include the estimated wait time individuallycalculated for each of the new users. After expiration of apredetermined period, method 200 may return back to operation 225 andoperation 230 to determine whether the load metric changed so as to meetor be above the threshold load value. Accordingly, if existing usersleave and no longer access multi-client network service 120 or server105 activates one or more additional computational (or network)resources 130, server 105 can enable joining the multi-client networkservice 120 by one or more of the new users.

In some implementations, the threshold load value can be dynamicallyupdated by server 105 based on changes in the current load capacity ofthe multi-client network service or other parameters such as datatraffic parameters.

As explained above, server 105 can maintain a second threshold value,which differs from the above threshold value. The second threshold valuemay come into play at operations 240 or 245. The second threshold valuecan be a cut-off time for the timestamps. Accordingly, the users thatcaused generation of user requests with the timestamps issued before thesecond threshold value (i.e., the cut-off time) are allowed to join themulti-client network service. In contrast, the users that causedgeneration of user requests with the timestamps issued after the secondthreshold value (i.e., the cut-off time) are not allowed to join themulti-client network service for at least a wait period. The secondthreshold value can be predetermined or be constantly updated based onthe load on the system.

FIG. 3 is a process flow diagram showing another method 300 forproviding a multi-client network service, according to an exampleembodiment. Method 300 may be performed by processing logic that maycomprise hardware (e.g., decision-making logic, dedicated logic,programmable logic, ASIC), software (such as software run on ageneral-purpose computer system or a dedicated machine), or acombination of both. In one example embodiment, the processing logicrefers to server 105 of FIG. 1. Below recited operations of method 300may be implemented in an order different than described and shown in thefigure. Moreover, method 300 may have additional operations not shownherein, but which can be evident for those skilled in the art from thepresent disclosure. Method 300 may also have fewer operations thanoutlined below and shown in FIG. 3. In some implementations, operationsof method 200 and operations of method 300 can be mixed together in ahybrid method.

Method 300 commences at operation 305 when server 105 provides,provisions, or maintains multi-client network service 120 to a pluralityof existing users of user devices 110A, 110E over at least onecommunications network 115. As explained above, multi-client networkservice 120 can refer to, for example, a network multiplayer game, anonline multiplayer game, a virtual reality multiplayer game, avideo-on-demand service, a television broadcasting service, a multiuseronline entertainment service, and the like.

At operation 310, server 105 receives one or more requests to joinmulti-client network service 120 from one or more new users such thatthe new users can access the same multi-client network service 120similarly to how the existing users access and enjoy the multi-clientnetwork service 120. The requests to join multi-client network service120 can include certain data or metadata such as a user ID, usercredentials, information pointing out what multi-client network servicethe user want to join or access, information concerning a make, model,or type of user device, and so forth. In some embodiments, server 105can request from user devices of the new users any or all of theabove-listed parameters such as a user ID, user credentials, informationpointing out what multi-client network service the user want to join oraccess, and information concerning a make, model, or type of userdevice.

At operation 315, server 105 individually and independently issuestimestamps to each of the new users upon receipt of the requests toaccess or join multi-client network service 120 from the new users. Thetimestamps can be associated with the requests to access or joinmulti-client network service 120 and stored in a memory or database ofserver 105 or other data storage such as data storage 125. Each of thetimestamps can characterize a time and date when a certain new userrequested to access or join multi-client network service 120 or when acorresponding request to access or join multi-client network service 120was received by server 105. In some implementations, the timestamps canbe replaced with other IDs or indicia to reflect timing of when acorresponding request was issue, sent, or received by server 105.

At operation 320, server 105 obtains load metric from the requests tojoin or access multi-client network service 120. The load metric can becalculated based on the timestamps and optionally other parameters, suchas a current load capacity of multi-client network service 120. Forthese ends, server 105 may repeatedly determine the current loadcapacity of multi-client network service 120. Thus, the load metric cancharacterize at least a traffic load on the multi-client network serviceat one or more given times.

At operation 325, server 105 collects the load metric to obtainhistorical data characterizing, for example, a demand in multi-clientnetwork service 120 over time. In other words, the historical data caninform how the load metric changes over time with respect tomulti-client network service 102 based on a number of factors or events(such as a “game rush” event).

At operation 330, server 105 predicts a future load demand with respectto multi-client network service 120 based on the historical data. Thepredictions can be made by server 105 based on the historical data usingone or more of the following: an artificial intelligence method,machine-learning method, statistical method, heuristic method, datapattern recognition method, curve comparison method, and method fordetermining acceleration or deceleration in the load demand or anothercharacteristic associated with multi-client network service 120.

At operation 335, server 105 selectively enables to join or accessmulti-client network service 120 by at least one of the new users basedon the future load demand earlier predicted by server 105. Operation 335can be a supplemental one to operations 225 and 230 performed in method200 of FIG. 2. In other words, in some optional implementations, thepredictions can contribute in deciding or calculating the threshold loadvalue.

FIG. 4 is a high-level block diagram illustrating a computing device 400suitable for implementing the methods described herein. In particular,computing device 400 may be used for implementing the methods forproviding the multi-client network service as described above. Computingdevice 400 may include, be, or be an integral part of one or more of avariety of types of devices, such as a general-purpose computer, desktopcomputer, laptop computer, tablet computer, server, netbook, mobilephone, smartphone, infotainment system, smart television device, amongothers. In some embodiments, computing device 400 can be regarded as aninstance of server 105, user device 110A, 110B, additional computationalresources 130, and data storage/digital content providers 125.

As shown in FIG. 4, computing device 400 includes one or more processors410, memory 420, one or more mass storage devices 430, zero or moreoutput devices 450, zero or more input devices 460, one or more networkinterfaces 470, zero or more optional peripheral devices 480, and acommunication bus 490 for operatively interconnecting the above-listedelements. Processors 410 can be configured to implement functionalityand/or process instructions for execution within computing device 400.For example, processors 410 may process instructions stored in memory420 or instructions stored on storage devices 430. Such instructions mayinclude components of an operating system or software applications.

Memory 420, according to one example, is configured to store informationwithin computing device 400 during operation. For example, memory 420can store a database or digital media content such as digital productsor other data pertaining to multi-client network services. Memory 420,in some example embodiments, may refer to a non-transitorycomputer-readable storage medium or a computer-readable storage device.In some examples, memory 420 is a temporary memory, meaning that aprimary purpose of memory 420 may not be long-term storage. Memory 420may also refer to a volatile memory, meaning that memory 420 does notmaintain stored contents when memory 420 is not receiving power.Examples of volatile memories include RAM, dynamic random accessmemories (DRAM), static random access memories (SRAM), and other formsof volatile memories known in the art. In some examples, memory 420 isused to store program instructions for execution by processors 410.Memory 420, in one example, is used by software applications. Generally,software applications refer to software applications suitable forimplementing at least some operations of the methods as describedherein.

Mass storage devices 430 can also include one or more transitory ornon-transitory computer-readable storage media or computer-readablestorage devices. For example, memory 430 can store database or digitalmedia content such as digital products or other data pertaining tomulti-client network services. In some embodiments, mass storage devices430 may be configured to store greater amounts of information thanmemory 420. Mass storage devices 430 may be also configured forlong-term storage of information. In some examples, mass storage devices430 include non-volatile storage elements. Examples of such non-volatilestorage elements include magnetic hard discs, optical discs, solid-statediscs, flash memories, forms of electrically programmable memories(EPROM) or electrically erasable and programmable memories, and otherforms of non-volatile memories known in the art.

Computing device 400 may also include zero or more input devices 460.Input devices 460 may be configured to receive input from a user throughtactile, audio, video, or biometric channels. Examples of input devices460 may include a keyboard, keypad, mouse, trackball, touchscreen,touchpad, microphone, video camera, image sensor, fingerprint sensor, orany other device capable of detecting an input from a user or othersource and relaying the input to computing device 400 or componentsthereof.

Output devices 450 may be configured to provide output to a user throughvisual or auditory channels. Output devices 450 may include a videographics adapter card, display, such as liquid crystal display (LCD)monitor, light emitting diode (LED) monitor, or organic LED monitor,sound card, speaker, lighting device, projector, or any other devicecapable of generating output that may be intelligible to a user. Outputdevices 450 may also include a touchscreen, presence-sensitive display,or other input/output capable displays known in the art.

Computing device 400 can also include network interface 470. Networkinterface 470 can be utilized to communicate with external devices viaone or more networks such as one or more wired, wireless, or opticalnetworks including, for example, the Internet, intranet, local areanetwork, wide area network, cellular phone networks (e.g., Global Systemfor Mobile communications network, Long-Term Evolution communicationsnetwork, packet switching communications network, circuit switchingcommunications network), Bluetooth radio, and an IEEE 802.11-based radiofrequency network, among others. Network interface 470 may be a networkinterface card, such as an Ethernet card, an optical transceiver, aradio frequency transceiver, or any other type of device that can sendand receive information.

An operating system of computing device 400 may control one or morefunctionalities of computing device 400 or components thereof. Forexample, the operating system may interact with the softwareapplications and may facilitate one or more interactions between thesoftware applications and processors 410, memory 420, storage devices430, input devices 460, output devices 450, and network interface 470.The operating system may interact with or be otherwise coupled tosoftware applications or components thereof. In some embodiments,software applications may be included in operating system.

Thus, methods and systems for providing a multi-client network servicehave been described. Although embodiments have been described withreference to specific example embodiments, it will be evident thatvarious modifications and changes can be made to these exampleembodiments without departing from the broader spirit and scope of thepresent application. Accordingly, the specification and drawings are tobe regarded in an illustrative rather than a restrictive sense.

What is claimed is:
 1. A system for providing a multi-client networkservice, the system comprising: an at least one server in ademilitarized zone including an at least one processor and anon-transitory computer-readable medium including computer-executableprogram instructions, the server communicating with one or more remoteclient devices, and wherein, when the computer-executable programinstructions are executed by the at least one processor, the at leastone processor of the at least one server: receives a plurality ofrequests to join a multi-client network service from one or more newclient devices; obtains a load metric of the multi-client networkservice, wherein the load metric characterizes at least a minimal numberof connections or a minimal traffic load on the multi-client networkservice; analyzes a demand in the multi-client network service over timeto predict a future load demand in the multi-client network service;individually and independently issues at least one timestamp to the newone or more new client devices, the at least one timestamp having anexpiration time, the expiration time being extended by the at least oneprocessor upon receiving, from the one or more new client devices, oneor more retry requests to join the multi-client network service; allowsthe one or more client devices to join the multi-client network service,based on the at least one timestamp of the one or more new clientdevices, and in response the load metric of the multi-client networkservice meeting or being below a threshold load value; and selects atleast one of one or more designated servers for the one or more newclient devices to connect to.
 2. The system of claim 1, where the atleast one processor of the at least one server: causes delivery of await message to at least one of the one or more new client devices, inresponse to the load metric of the multi-client network service beingabove the threshold load value; and keeps the at least one of the one ormore new client devices in a wait mode for a predetermined period oruntil the load metric of the multi-client network service changes tomeet or be below the threshold value.
 3. The system of claim 1, wherethe at least one processor of the at least one server: distinguishes theone or more new client devices between one or more new-to-session clientdevices that have previously joined the multi-client network service,and one or more new-to-network client devices that have not previouslyjoined the multi-client network service.
 4. The system of claim 1, wherethe at least one processor of the at least one server: obtains a loadmetric of the one or more designated servers of the multi-client networkservice, wherein the load metric characterizes at least a minimal numberof connections or a minimal traffic load on the multi-client networkservice.
 5. The system of claim 4, where the selecting of the one ormore designated servers is undertaken by selecting the one or moredesignated servers with the lowest load metric.
 6. The system of claim4, where the selecting of the one or more designated servers isundertaken by selecting the one or more designated servers with thelowest load metric, where the load metric is measured by one or more ofa number of connections to each one or more designated server, anapplication response time, a number of active sessions, andpre-determined load ratios or pre-determined threshold values betweenthe one or more designated servers.
 7. The system of claim 4, where thenumber of the one or more designated servers in the multi-client networkservice may be dynamically increased in response to an increased load onthe multi-client network service.
 8. The system of claim 1, wherein theselecting of the one or more designated servers by the at least oneprocessor of the at least one server, is to select the one or moredesignated servers to send a request to, from one or more new-to-networkclient devices that have not previously joined the multi-client networkservice.
 9. The system of claim 1, wherein the selecting of the one ormore designated servers by the at least one processor of the at leastone server, is to select the one or more designated servers to send arequest to, from one or more new-to-session client devices that havepreviously joined the multi-client network service.
 10. A computerimplemented method for providing a multi-client network service, themethod comprising: receiving, a plurality of requests to join amulti-client network service from one or more new client devices;obtaining, a load metric of the multi-client network service, whereinthe load metric characterizes at least a minimal number of connectionsor a minimal traffic load on the multi-client network service;analyzing, a demand in the multi-client network service over time topredict a future load demand in the multi-client network service;issuing, at least one timestamp to the one or more new client devices,the at least one timestamp having an extendible expiration time uponreceiving from the new one or more client devices, one or more retryrequests to join the multi-client network service; allowing, the one ormore new client devices to join the multi-client network service, basedon the at least one timestamp of the one or more new client devices andin response to the load metric of the multi-client network servicemeeting or being below a threshold load value; and selecting, at leastone of one or more designated servers for the one or more new clientdevices to connect to.
 11. The method of claim 10, further comprising:causing, delivery of a wait message to at least one of the one or morenew client devices, in response to the load metric of the multi-clientnetwork service being above the threshold load value; and keeping, theat least one of the one or more new client devices in a wait mode for apredetermined period or until the load metric of the multi-clientnetwork service changes to meet or be below the threshold value.
 12. Themethod of claim 10, further comprising: distinguishing, the one or morenew client devices between one or more new-to-session client devicesthat have previously joined the multi-client network service, and one ormore new-to-network client devices that have not previously joined themulti-client network service.
 13. The method of claim 10, furthercomprising: obtaining, a load metric of the one or more designatedservers of the multi-client network service, wherein the load metriccharacterizes at least a minimal number of connections or a minimaltraffic load on the multi-client network service.
 14. The method ofclaim 13, where the selecting of the one or more designated servers isundertaken by selecting the one or more designated servers with thelowest load metric.
 15. The system of claim 13, where the selecting ofthe one or more designated servers is undertaken by selecting the one ormore designated servers with the lowest load metric, where the loadmetric is measured by one or more of a number of connections to each oneor more designated server, an application response time, a number ofactive sessions, and pre-determined load ratios or pre-determinedthreshold values between the one or more designated servers.
 16. Themethod of claim 13, further comprising: dynamically increasing thenumber of the one or more designated servers in the multi-client networkservice in response to an increased load on the multi-client networkservice.
 17. The method of claim 10, where the selecting of the one ormore designated servers, is to select the one or more designated serversto send a request to, from one or more new-to-network client devicesthat have not previously joined the multi-client network service. 18.The method of claim 10, where the selecting of the one or moredesignated servers, is to select the one or more designated servers tosend a request to, from one or more new-to-session client devices thathave previously joined the multi-client network service.
 19. Anon-transitory computer-readable storage medium having embodied thereona program, the program being executable by a processor to perform amethod for providing a multi-client network service comprising:receiving, a plurality of requests to join a multi-client networkservice from one or more new client devices; obtaining, a load metric ofthe multi-client network service, wherein the load metric characterizesat least a minimal number of connections or a minimal traffic load onthe multi-client network service; analyzing, a demand in themulti-client network service over time to predict a future load demandin the multi-client network service; issuing, at least one timestamp tothe one or more new client devices, the at least one timestamp having anextendible expiration time upon receiving from the new one or moreclient devices, one or more retry requests to join the multi-clientnetwork service; allowing, the one or more new client devices to jointhe multi-client network service, based on the at least one timestamp ofthe one or more new client devices and in response to the load metric ofthe multi-client network service meeting or being below a threshold loadvalue; and selecting, at least one of one or more designated servers forthe one or more new client devices to connect to.
 20. The non-transitorycomputer-readable storage medium of claim 19, where the method performedby the program further comprises: causing, delivery of a wait message toat least one of the one or more new client devices, in response to theload metric of the multi-client network service being above thethreshold load value; and keeping, the at least one of the one or morenew client devices in a wait mode for a predetermined period or untilthe load metric of the multi-client network service changes to meet orbe below the threshold value.